package com.cskaoyan._05waitnotify;

import java.util.concurrent.TimeUnit;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/22 15:16
 **/
/*
wait方法释放锁
 */
public class Demo3 {
    // 定义一把锁
    public static final Object OBJECT = new Object();
    public static void main(String[] args) {
        // 创建并启动一个线程
        new Thread(()->{
            System.out.println("A线程执行了");
            // sync
            synchronized (OBJECT) {
                System.out.println("A线程进入sync");

                try {
                    TimeUnit.SECONDS.sleep(10);
                    // 使用wait方法
                    System.out.println("wait before");
                    OBJECT.wait();
                    // 后面的代码不执行了
                    System.out.println(" ");

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        },"A").start();

        // main休眠
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        // 创建并启动一个线程
        new Thread(()->{
            System.out.println("B线程已经执行了");
            // sync
            synchronized (OBJECT) {
                System.out.println("B线程进入sync");
            }
        },"B").start();
    }
}
